package com.malou.server.ventas.ingresostock;

import java.sql.SQLException;
import java.util.List;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.malou.client.ventas.ingresostock.IngresoStock;
import com.malou.client.ventas.proveedor.Proveedor;
import com.malou.server.base.Conexion;

public class IngresoStocks {
	
	public static SqlMapClient sqlMap = null;
	public static boolean isSuperUsuario;	
	
	public static boolean save(IngresoStock ins){
		boolean retorno = true;		   
	
		sqlMap = Conexion.getSqlMap();		
		try {
			sqlMap.insert("insertIngresoStock", ins);
			
			Integer stocktienda = (Integer)sqlMap.queryForObject("getStocktienda", ins);
			sqlMap.startTransaction();
			if(stocktienda == null){
	               sqlMap.insert("insertStocktienda", ins);	               
	        }
	         else
	             sqlMap.update("updateStocktiendaingreso", ins);
			
			incrementaStock(ins);
						
			sqlMap.commitTransaction();
		} catch (SQLException e) {
			retorno = false;
			e.printStackTrace();			
		}
		
		try {
			sqlMap.endTransaction();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return retorno;
	}

	@SuppressWarnings("unchecked")
	public static List<Proveedor> getProveedor(){		   
		
		sqlMap = Conexion.getSqlMap();
		
        List<Proveedor> data = null;
		try {
			data = sqlMap.queryForList("getProveedores", null);				
		} catch (SQLException e) {
			e.printStackTrace();
		}
        return data;
	}
	
	public static void incrementaStock(IngresoStock ins){
		try {
			sqlMap.update("incrementaStock", ins);			
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public static void disminuyeStockTienda(Integer modeloprenda_id,	Integer cantidad, Integer tienda_id) throws SQLException {
		IngresoStock ins = new IngresoStock();
		ins.setModeloprenda_id(modeloprenda_id);
		ins.setTienda_id(tienda_id);
		ins.setCantidad(cantidad);
		sqlMap.update("updateStocktiendaegreso", ins);
        sqlMap.update("disminuyeStock", ins);        
	}
	
	public static void incrementaStockTienda(Integer modeloprenda_id,	Integer cantidad, Integer tienda_id) throws SQLException {
		IngresoStock ins = new IngresoStock();
		ins.setModeloprenda_id(modeloprenda_id);
		ins.setTienda_id(tienda_id);
		ins.setCantidad(cantidad);		
		
		Integer stocktienda = (Integer)sqlMap.queryForObject("getStocktienda", ins);		
		if(stocktienda == null){
          sqlMap.insert("insertStocktienda", ins);	               
        }
        else
          sqlMap.update("updateStocktiendaingreso", ins);		
		
        sqlMap.update("incrementaStock", ins);     
     
	}
	
	public static boolean hasStock(Integer modeloprenda_id, Integer cantidad, Integer tienda_id) throws SQLException {
		boolean retorno = true;
		Integer stockactual = null;
		IngresoStock ins = new IngresoStock();
		ins.setModeloprenda_id(modeloprenda_id);
		ins.setTienda_id(tienda_id);		
		
		stockactual =(Integer)sqlMap.queryForObject("getStocktienda", ins);
		if(stockactual < cantidad){
			retorno = false;			
		}
		
		return retorno;
	}	
	
}
